package ru.st.selenium.applogicImp;

import ru.st.selenium.applogicTop.UsersAndDepartmentsHelper;
import ru.st.selenium.model.Department;
import ru.st.selenium.model.Employer;


public class UsersAndDepartmentsHelperImp extends DriverBasedHelper implements
		UsersAndDepartmentsHelper {

	public UsersAndDepartmentsHelperImp(ApplicationManagerImp manager) {
		super(manager.getWebDriver());
	}

	// Создание/Редактирование - подразделений:
	@Override
	public void createDepartments(Department departments) {
		pages.User.ensurePageLoaded()
				.GoToUseradmin()
				.gotoFremObjectPage()
				.ensurePageLoaded()
				.clickRootDep() // Веделяем корневое подразделение для взаимодействие с элементом
				
				.ButtonAddDep()	// Добавить подразделение - Подразделение 1
				.setNameDep(departments.getDepName()) // Вводим название подразделения
				.setConditionalNumber(departments.getConditionalNumber()) // Условный номер
				.setCounter(departments.getCounter()) // Счетчик
				.setResetDate(departments.getResetDate()) // Дата обнуления счетчика
				.setNumeratorTemplate(departments.getNumeratorTemplate()) // Шаблон нумератора

				.clickSaveDep() // Сохранить подразделение
				.verifyCreateDep(); // Проверяем отображение элемента в гриде

	}

	// -Подразделение 2
	@Override
	public void createDepartments1(Department departments1) {
		pages.usersAndDepartmentPage
				.clickRootDep() // Выбираем корневое подразделение
				.ButtonAddDep().setNameDep(departments1.getDepName())
				.setConditionalNumber(departments1.getConditionalNumber())
				.setCounter(departments1.getCounter())
				.setResetDate(departments1.getResetDate())
				.setNumeratorTemplate(departments1.getNumeratorTemplate())
				.clickSaveDep().verifyCreateDep1();

	}

	// -Подразделение 3
	@Override
	public void createDepartments2(Department departments2) {
		pages.usersAndDepartmentPage.clickRootDep().ButtonAddDep()
				.setNameDep(departments2.getDepName())
				.setConditionalNumber(departments2.getConditionalNumber())
				.setCounter(departments2.getCounter())
				.setResetDate(departments2.getResetDate())
				.setNumeratorTemplate(departments2.getNumeratorTemplate())
				.clickSaveDep().verifyCreateDep2();

	}

	// -Подразделение 3_1
	@Override
	public void createDepartments2_1(Department departments2_1) {
		pages.usersAndDepartmentPage.clickSubDep().ButtonAddDep()
				.setNameDep(departments2_1.getDepName())
				.setConditionalNumber(departments2_1.getConditionalNumber())
				.setCounter(departments2_1.getCounter())
				.setResetDate(departments2_1.getResetDate())
				.setNumeratorTemplate(departments2_1.getNumeratorTemplate())
				.clickSaveDep().verifyCreateDep2_1();

	}
	
	// -Проверяем Редактирование значений подразделения
	@Override
	public void createDepartments3(Department departments3) {
		pages.usersAndDepartmentPage.clickSubDep().clickbuttonEditDep()
				.setNameDep(departments3.getDepName())
				.setConditionalNumber(departments3.getConditionalNumber())
				.setCounter(departments3.getCounter())
				.setResetDate(departments3.getResetDate())
				.setNumeratorTemplate(departments3.getNumeratorTemplate())
				.clickSaveDep().verifyCreateDep3();

	}

		
	// Удаление подразделений
	@Override
	public void deleteDepartments() {
		pages.usersAndDepartmentPage.ensurePageLoaded()
		.clickSubDep2() // Выбираем подразделение в гриде
		.clickButtonRemoveDep() // Удалить подразделение
		.clickOkRemoveDel()// Подтвердить удаление подразделения
		.clickSubDep3()
		.clickButtonRemoveDep()
		.clickOkRemoveDel();
	}

	
	// Добавление пользователей:
	// -Пользователь1
	@Override
	public void createUsers(Employer user) {
		pages.User.ensurePageLoaded().GoToUseradmin()
				.gotoFremObjectPage().ensurePageLoaded()
				.clickSubSite() // Раскрытие дочерних подразделений
				.buttonAddUser() // Добавить пользователя
				.fremEditUser() // Переходим в iframe формы добавления пользователя
				.setLastNameField(user.getLastName()) // Фамилия
				.setNameField(user.getName()) // Имя пользователя
				.setPatronymicField(user.getPatronymic()) // Отчество
				.clickSexWomen() // Пол
				.selectDateOfBirth() // Дата рождения
				.setJobTitle(user.getJobTitle()) // Должность
				.setNameUserLogin(user.getLoginName()) // Логин пользователя
				.setPasswordUser(user.getPassword()) // Пароль
				.setСonfirmationPassword(user.getСonfirmationPassword()) // Подтверждение пароля
				.setAdditionalNumber(user.getAdditionalNumber()) // Дополнительный номер
				.setUserForcedSorting(user.getUserForcedSorting()) // Порядковый номер при принудительной сортировки
				.clickNeedPasswordChange() // Сбросить признак - Сменить пароль при следующем входе
				.setCountry(user.getCountry()) // Страна
				.setPostalCode(user.getPostalCode()) // Почтовый код
				.setRegion(user.getRegion()) // Область
				.setAddress(user.getAddress()) // Адрес - улица, дом, кв.
				.setJobIphone(user.getJobIphone()) // Рабочий телефон
				.setHomeIphone(user.getHomeIphone()) // Домашний телефон
				.setEmail(user.getEmail()) // Email
				.setCompany(user.getCompany()) // Компания
				.clickButtonSave() // Нажимаем кнопку сохранить для добавления пользователя
				.gotoTopFrem().gotoFremObjectPage().verifyCreateUser();
	}
	
	// -Пользователь2
	@Override
	public void createUsers2(Employer user2) {
		pages.usersAndDepartmentPage.ensurePageLoaded()
				.buttonAddUser() // Добавить пользователя
				.fremEditUser() // Переходим в iframe формы добавления пользователя
				.setLastNameField(user2.getLastName()) // Фамилия
				.setNameField(user2.getName()) // Имя пользователя
				.setPatronymicField(user2.getPatronymic()) // Отчество
				.selectDateOfBirth() // Дата рождения
				.setJobTitle(user2.getJobTitle()) // Должность
				.setNameUserLogin(user2.getLoginName()) // Логин пользователя
				.setPasswordUser(user2.getPassword()) // Пароль
				.setСonfirmationPassword(user2.getСonfirmationPassword()) // Подтверждение пароля
				.setAdditionalNumber(user2.getAdditionalNumber()) // Дополнительный номер
				.setUserForcedSorting(user2.getUserForcedSorting()) // Порядковый номер при принудительной сортировки
				.clickNeedPasswordChange() // Сбросить признак - Сменить пароль при следующем входе
				.setCountry(user2.getCountry()) // Страна
				.setPostalCode(user2.getPostalCode()) // Почтовый код
				.setRegion(user2.getRegion()) // Область
				.setAddress(user2.getAddress()) // Адрес - улица, дом, кв.
				.setJobIphone(user2.getJobIphone()) // Рабочий телефон
				.setHomeIphone(user2.getHomeIphone()) // Домашний телефон
				.setEmail(user2.getEmail()) // Email
				.setCompany(user2.getCompany()) // Компания
				.clickButtonSave() // Нажимаем кнопку сохранить для добавления пользователя
				.gotoTopFrem().gotoFremObjectPage().verifyCreateUser2();
	}

	@Override
	public void createUsers3(Employer user3) {
		pages.usersAndDepartmentPage.clickSubSite2()	
			.buttonAddUser() // Добавить пользователя
			.fremEditUser() // Переходим в iframe формы добавления пользователя
			.setLastNameField(user3.getLastName()) // Фамилия
			.setNameField(user3.getName()) // Имя пользователя
			.setPatronymicField(user3.getPatronymic()) // Отчество
			.selectDateOfBirth() // Дата рождения
			.setJobTitle(user3.getJobTitle()) // Должность
			.setNameUserLogin(user3.getLoginName()) // Логин пользователя
			.setPasswordUser(user3.getPassword()) // Пароль
			.setСonfirmationPassword(user3.getСonfirmationPassword()) // Подтверждение пароля
			.setAdditionalNumber(user3.getAdditionalNumber()) // Дополнительный номер
			.setUserForcedSorting(user3.getUserForcedSorting()) // Порядковый номер при принудительной сортировки
			.clickNeedPasswordChange() // Сбросить признак - Сменить пароль при следующем входе
			.setCountry(user3.getCountry()) // Страна
			.setPostalCode(user3.getPostalCode()) // Почтовый код
			.setRegion(user3.getRegion()) // Область
			.setAddress(user3.getAddress()) // Адрес - улица, дом, кв.
			.setJobIphone(user3.getJobIphone()) // Рабочий телефон
			.setHomeIphone(user3.getHomeIphone()) // Домашний телефон
			.setEmail(user3.getEmail()) // Email
			.setCompany(user3.getCompany()) // Компания
			.clickButtonSave() // Нажимаем кнопку сохранить для добавления пользователя
			.gotoTopFrem().gotoFremObjectPage().verifyCreateUser3()
			.gotoTopFrem();
	}

}



